﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>覆盖或禁用热键 | AutoHotkey v2</title>
<meta name="description" content="Learn how to override or disable built-in Windows hotkeys." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>

<body>
<h1>覆盖或禁用热键</h1>

<p>通过对注册表进行下面的修改, 您可以禁用除 <kbd>Win</kbd>+<kbd>L</kbd> 和 <kbd>Win</kbd>+<kbd>U</kbd> 外的其他所有内置的 Windows 热键(这种方法应该适用于所有操作系统, 但可能需要重启才生效):</p>
<pre>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
NoWinKeys REG_DWORD 0x00000001 (1)</pre>
<p>但如果您想进一步设置而非仅仅禁用它们, 那么请继续阅读.</p>
<p>其他应用程序拥有的热键可以被覆盖或禁用, 只需将它们指定给脚本中的操作即可. 此特性常用来改变 Windows 内置的热键. 例如, 如果您想用 <kbd>Win</kbd>+<kbd>E</kbd>(启动资源管理器的快捷键) 执行其他的动作, 请使用这个:</p>
<pre>#e::
信息框 "This 热键 is now owned by the script."
返回</pre>
<p>在下面的例子中, 完全禁用打开运行对话框的 <kbd>Win</kbd>+<kbd>R</kbd> 热键:</p>
<pre>#r::返回</pre>
<p>类似的, 要禁用左右 <kbd>Win</kbd> 键, 请使用:</p>
<pre>LWin::返回
RWin::返回</pre>
<p>要禁用或改变一个应用程序的非全局热键(即仅对那个应用程序的窗口有效的快捷键), 请参考下面的例子, 其中禁用了仅适用于记事本的 <kbd>Control</kbd>+<kbd>P</kbd>(打印), 而让它对其他所有窗口保持有效:</p>
<pre>$^p::
{
    如果 窗口已激活("ahk_class Notepad")
        返回  <em>; 即不进行操作, 这样让 Control-P 在记事本中失效.</em>
    发送 "^p"
}</pre>
<p>在上面的例子中, 必须使用 $ 前缀, 这样热键才可以 "发送自身" 而不触发它自己(否则会出现提示无限循环的警告对话框). 另请参阅: <a href="../Hotkeys.htm#Context">上下文相关的热键</a>.</p>
<p>您可以尝试执行上面的每个例子: 把它们复制到新文本文件(例如 "Override.ahk"), 然后运行这个文件.</p>
</body>
</html>